import { NestFactory } from '@nestjs/core';
import { ConfigService } from '@nestjs/config'; // 用于访问配置值的服务
import { MicroserviceOptions, Transport } from '@nestjs/microservices'; // 定义微服务的模块
import { TestAppModule } from './test-app.module';

async function bootstrap() {
  // 创建应用程序上下文以访问模块和服务
  const appContext = await NestFactory.createApplicationContext(TestAppModule);

  // 获取ConfigService实例以获取配置值
  const configService = appContext.get(ConfigService);

  // 从配置中获取主机和端口
  const host = configService.get<string>('MAIN_APP_HOST');
  const port = configService.get<number>('TEST_APP_PORT');

  // 创建使用TCP传输的微服务
  const app = await NestFactory.createMicroservice<MicroserviceOptions>(
    TestAppModule,
    {
      transport: Transport.TCP,
      options: {
        host: host,
        port: port,
      },
    },
  );

  // 启动微服务监听
  await app.listen();

  console.log(`test-app 服务器启动成功，监听端口 ${host}:${port}`);
}

bootstrap();
